package com.zy.www.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author zy
 * @description https://help.aliyun.com/document_detail/130846.html
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class  User {
    /**
     * 人脸佩戴眼镜的情况，取值：
     * None：不戴眼镜
     * Wear：佩戴眼镜
     * Sunglass：佩戴墨镜
     */
    private Common glasses;

    /**
     * 人脸性别，取值：Male、Female
     */
    private Common gender;

    /**
     * 人脸年龄
     */
    private Common age;

    /**
     * 人脸的微笑程度
     */
    private Common smile;

    private Location location;

    private Quality quality;

    /**
     * 人脸图片质量是否合格，取值：true/false。
     * 判定规则：人脸模糊度<5，且不佩戴墨镜，且人脸角度（包括人脸左右摇头角度、人脸抬头低头角度、人脸平面旋转角度）在30度内。
     * 该值仅作为参考。
     */
    private Boolean qualified;

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Common {
        // 取值范围：0~1。值越高表示结果越可信。
        private Float rate;
        private String value;

    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Location {
        // 人脸区域的宽度
        private Float w;
        // 人脸区域的高度
        private Float h;
        // 以图片左上角为坐标原点，人脸区域左上角到y轴的距离
        private Float x;
        // 以图片左上角为坐标原点，人脸区域左上角到x轴的距离
        private Float y;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Quality {
        // 人脸的平面旋转角度，建议值：-30~30
        private Float roll;
        // 人脸图片的模糊度，取值范围：0~20。分数越高表示越模糊。建议值：小于5
        private Float blur;
        // 人脸的抬头/低头角度，建议值：-30~30
        private Float pitch;
        // 人脸的左右摇头角度，建议值：-30~30
        private Float yaw;
    }
}
